//============================================================================================
/**
 * @file	pkthln_poke_act.c
 * @brief	ポケスロンポケモンアクター
 * @author	Nozomu Saito
 *
 * モジュール名：PokeAct
 */
//============================================================================================
#ifndef __PKTHLN_POKE_ACT_H__
#define __PKTHLN_POKE_ACT_H__

#include "cmn_res.h"
#include "poke_clact.h"

typedef struct PKTHLN_POKE_ACT_CNT_tag * POKE_ACT_CNT_PTR;
typedef struct POKE_ACT_tag * POKE_ACT_PTR;

extern POKE_ACT_CNT_PTR PokeAct_Init( const int inHeapID, const u8 inPokeNum, const int inPri,
									  CMN_RES_CNT_PTR inResCntPtr, CLACT_SET_PTR pClActSet	);

extern void PokeAct_Free(POKE_ACT_CNT_PTR cnt_ptr);

extern void PokeAct_SetPokeActor(	POKE_ACT_CNT_PTR cnt_ptr, const int inEntryNum,
									const MONS_INFO *inInfoTbl,
									const PCLACT_SET_PARAM *inParam,
									const int inTcbPri,
									const int inBaseResID );

extern BOOL PokeAct_CheckActSetTask(POKE_ACT_CNT_PTR cnt_ptr);

extern POKE_ACT_PTR PokeAct_GetPokeActPtr(POKE_ACT_CNT_PTR cnt_ptr, const u8 inIndex);
extern void PokeAct_SetBigPokeChinkFlag(POKE_ACT_CNT_PTR cnt_ptr);
extern PCLACT_PTR PokeAct_GetPclActPtr(POKE_ACT_PTR ptr);

extern void PokeAct_DispCnt(POKE_ACT_PTR poke_ptr, const u8 inDisp);
extern void PokeAct_ShdwDispCnt(POKE_ACT_PTR poke_ptr, const u8 inDisp);
extern void PokeAct_PokeDispCnt(POKE_ACT_PTR poke_ptr, const u8 inDisp);
extern void PokeAct_SetPriority(POKE_ACT_PTR poke_ptr, const int inPri);
extern void PokeAct_ChgPriorityOfs(POKE_ACT_PTR poke_ptr, int inOfs);
extern u32 PokeAct_GetPriority(POKE_ACT_PTR poke_ptr);
extern void PokeAct_SetAffine(POKE_ACT_PTR poke_ptr, u8 inParam);
extern void PokeAct_SetAffineVec(POKE_ACT_PTR poke_ptr, const VecFx32* inVec);
extern void PokeAct_SetDir(POKE_ACT_PTR poke_ptr, const POKE_DIR inDir);
extern void PokeAct_SetDirDatOnly(POKE_ACT_PTR poke_ptr, const POKE_DIR inDir);
extern void PokeAct_SetAnm(POKE_ACT_PTR poke_ptr, const ANM_TYPE inAnmType);
extern void PokeAct_SetAnmTrns(POKE_ACT_PTR poke_ptr, const ANM_TYPE inAnmType);
extern void PokeAct_SetPos(POKE_ACT_PTR poke_ptr, const int inX, const int inY, const BOOL inFollow);
extern void PokeAct_SetPosPokeOnly(POKE_ACT_PTR poke_ptr, const int inX, const int inY);
extern void PokeAct_GetPos(POKE_ACT_PTR poke_ptr, int *outX, int *outY );
extern void PokeAct_GetCPos(POKE_ACT_PTR poke_ptr, int *outX, int *outY );
extern void PokeAct_Move(	POKE_ACT_PTR poke_ptr, const int inX, const int inY,
							const POKE_DIR inDir, const BOOL inFollow	);
extern void PokeAct_ChangePalette(	POKE_ACT_CNT_PTR cnt_ptr, const u8 inIdx,
									const NNS_G2D_VRAM_TYPE inVramType, u16 *inPalData );
extern void PokeAct_SetTouchRange(POKE_ACT_PTR poke_ptr, const int inRange);
extern void PokeAct_SetHitData(POKE_ACT_PTR poke_ptr, const int inOfs, const int inRange);
extern void PokeAct_GetHitData(POKE_ACT_PTR poke_ptr,
								const fx32 inX, const fx32 inY, fx32 *outX, fx32 *outY, int *outRange);
extern int PokeAct_GetHitRange(POKE_ACT_PTR poke_ptr);
extern int PokeAct_GetHitOfs(POKE_ACT_PTR poke_ptr);
extern void PokeAct_SetPosShadow(POKE_ACT_PTR poke_ptr, const int inX, const int inY);
extern void PokeAct_SetPosTouch(POKE_ACT_PTR poke_ptr, const int inX, const int inY, const BOOL inFollow);
extern void PokeAct_GetHitPosByTouchPos(POKE_ACT_PTR poke_ptr,
								const fx32 inX, const fx32 inY, fx32 *outX, fx32 *outY);
extern void PokeAct_GetShadowPosByTouchPos(POKE_ACT_PTR poke_ptr,
									const int inX, const int inY, int *outX, int *outY);
extern void PokeAct_GetTouchPosByShadowPos(POKE_ACT_PTR poke_ptr,
									const int inX, const int inY, int *outX, int *outY);
extern PokeAct_CheckTouch(POKE_ACT_PTR poke_ptr,
								const fx32 inX, const fx32 inY, const int inTpX, const int inTpY);
extern BOOL PokeAct_AnmActiveCheck(POKE_ACT_PTR poke_ptr);
extern void PokeAct_SetScale(POKE_ACT_PTR poke_act, f32 sx, f32 sy);
extern BOOL PokeAct_GetDrawFlg(POKE_ACT_PTR poke_act);
extern void PokeAct_AllAnmStop(POKE_ACT_CNT_PTR cnt_ptr, const u8 inStop);

#endif	//__PKTHLN_POKE_ACT_H__